/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.banconacion.dao.base.mysql;

import com.banconacion.bean.SolicitudAperturaDTO;
import com.banconacion.dao.SolicitudAperturaDAO;
import com.banconacion.util.MySqlDataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.LinkedList;
import java.util.List;
/**
 *
 * @author igorov
 */
public class MySqlSolicitudAperturaDAO implements SolicitudAperturaDAO{

    public void guardarSolicitud(SolicitudAperturaDTO solicitudAperturaDTO) throws Exception {
        Connection cn = MySqlDataSource.obtenerConexion();
        String sql = "insert into solicitudCuenta(condicionSolicitud, fechaSolicitud, motivo, Cliente_codCliente) values(?, ?, ?, ?)";
        
        PreparedStatement pst = cn.prepareStatement(sql);
        pst.setInt(1, solicitudAperturaDTO.isCondicion());
        pst.setDate(2, solicitudAperturaDTO.getFechaSolicitud());
        pst.setString(3, solicitudAperturaDTO.getMotivo());
        pst.setInt(4, solicitudAperturaDTO.getCodigoCliente());
                
        pst.executeUpdate();
    }

    public List<SolicitudAperturaDTO> obtenerSolicitudesPendientes() throws Exception {
        List<SolicitudAperturaDTO> solicitudAperturaDTOs = new LinkedList<SolicitudAperturaDTO>();
        Connection cn = MySqlDataSource.obtenerConexion();
//        String sql = "SELECT * FROM solicitudcuenta where condicionSolicitud = 0";
        String sql = "SELECT s.idSolicitud, s.condicionSolicitud, s.fechaSolicitud, s.motivo, s.Cliente_codCliente, c.nombreCliente, c.apePatCliente, c.apeMatCliente, c.rucCliente " + 
                        " FROM SolicitudCuenta s, Cliente c " + 
                        "where s.condicionSolicitud = 0 and s.Cliente_codCliente = c.codCliente";
        PreparedStatement pst = cn.prepareStatement(sql);
        pst.executeQuery();
        ResultSet rs = pst.executeQuery();

        while (rs.next()) {
            SolicitudAperturaDTO solicitudAperturaDTO = new SolicitudAperturaDTO();
            
            solicitudAperturaDTO.setNumeroSolicitud(rs.getInt(1));
            solicitudAperturaDTO.setCondicion(rs.getInt(2));
            solicitudAperturaDTO.setFechaSolicitud(rs.getDate(3));
            solicitudAperturaDTO.setMotivo(rs.getString(4));
            solicitudAperturaDTO.setCodigoCliente(rs.getInt(5));
            solicitudAperturaDTO.setNombreCliente(rs.getString(6) + rs.getString(7) + rs.getString(8));
            solicitudAperturaDTO.setRucCliente(rs.getString(9));
            
            solicitudAperturaDTOs.add(solicitudAperturaDTO);
        }
        
        return solicitudAperturaDTOs;
    }

    public SolicitudAperturaDTO obtenerSolicitud(int idSolicitud) throws Exception {
        SolicitudAperturaDTO solicitudAperturaDTO = null;
        Connection cn = MySqlDataSource.obtenerConexion();
        String sql = "SELECT s.idSolicitud, s.condicionSolicitud, s.fechaSolicitud, s.motivo, s.Cliente_codCliente, c.nombreCliente, c.apePatCliente, c.apeMatCliente, c.rucCliente " + 
                        " FROM SolicitudCuenta s, Cliente c " + 
                        "where s.Cliente_codCliente = c.codCliente and s.idSolicitud=?";
        PreparedStatement pst = cn.prepareStatement(sql);
        pst.setInt(1, idSolicitud);
        pst.executeQuery();
        ResultSet rs = pst.executeQuery();

        while (rs.next()) {
             solicitudAperturaDTO = new SolicitudAperturaDTO();
            
            solicitudAperturaDTO.setNumeroSolicitud(rs.getInt(1));
            solicitudAperturaDTO.setCondicion(rs.getInt(2));
            solicitudAperturaDTO.setFechaSolicitud(rs.getDate(3));
            solicitudAperturaDTO.setMotivo(rs.getString(4));
            solicitudAperturaDTO.setCodigoCliente(rs.getInt(5));
            solicitudAperturaDTO.setNombreCliente(rs.getString(6) + rs.getString(7) + rs.getString(8));
            solicitudAperturaDTO.setRucCliente(rs.getString(9));
        }
        return solicitudAperturaDTO;
    }

    public void AprobarDesaprobarSolicitud(int idSolicitud, int calificacion) throws Exception {
        SolicitudAperturaDTO solicitudAperturaDTO = null;
        Connection cn = MySqlDataSource.obtenerConexion();
        
        String sql = "UPDATE SolicitudCuenta " +
                        "SET condicionSolicitud=? " +
                        "WHERE idSolicitud=?;";
        
        PreparedStatement pst = cn.prepareStatement(sql);
        pst.setInt(1, calificacion);
        pst.setInt(2, idSolicitud);
                
        pst.executeUpdate();
    }
    
    
    
}
